package leetwhisper.one;

import java.util.ArrayList;
import leetwhisper.one.ListNode;

public class AddTwoNumbers {
	static public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummy = new ListNode(-1);
        ListNode cur = dummy;
        int carry = 0;
        while (l1 != null || l2 != null) {
            int d1 = l1 == null ? 0 : l1.val;
            int d2 = l2 == null ? 0 : l2.val;
            int sum = d1 + d2 + carry;
            carry = sum >= 10 ? 1 : 0;
            cur.next = new ListNode(sum % 10);
            cur = cur.next;
            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;
        }
        if (carry == 1) cur.next = new ListNode(1);
        return dummy.next;
    }
	public static void main(String[] args) {
		ListNode listNode1 = new ListNode(2);
		ListNode listNode2 = new ListNode(3);
		ListNode listNode3 = new ListNode(4);
		ListNode listNode4 = new ListNode(6);
		ListNode listNode5 = new ListNode(3);
		ListNode listNode6 = new ListNode(8);
		
		listNode1.next = listNode2;
		listNode2.next = listNode3;
		listNode4.next = listNode5;
		listNode5.next = listNode6;
		
		ListNode ListNodeResult = addTwoNumbers(listNode1, listNode4);
		while (ListNodeResult.next != null) {
			System.out.print(""+ListNodeResult.val);
			ListNodeResult = ListNodeResult.next;
		}
		System.out.println(""+ListNodeResult.val);
	}
}
